Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

112
Vistas
responder al problema de visualización al presionar enter en lugar de hacer clic en "=" (Calculadora)

Todo mi código funciona excepto por una cosa: si uso los botones en pantalla primero, LUEGO uso el teclado, la respuesta no aparece. por ejemplo, si hago clic en 5+5 y luego presiono el botón "=" obtengo 10, pero si borro, luego escribo 5+5 y presiono Intro, la respuesta no aparece. Sin embargo, si la página se actualiza, puedo usar el teclado sin problemas, se muestra la respuesta.

En mi código, "ingresar" está configurado para hacer lo mismo que el botón "=".

Encontré el origen del problema (espero) pero no estoy seguro de cómo solucionarlo: en mi función de cómputo, cuando uso el teclado después de usar los botones, mi if(isNaN) devuelve un 1 en el archivo console.log (para poder encontrar dónde estaba fallando el código) No estoy seguro de por qué cree que lo que ingresa no es un número, porque funciona bien cuando no se tocan los botones.

Aquí está el código para el botón igual:

 equalsButton.addEventListener('click', button => { calculator.compute() calculator.updateDisplay() })

Aquí está el código para entrar:

 document.onkeyup = e => { //code for numbers 1-9 & operations// else if(e.key === "Enter") { calculator.compute() calculator.updateDisplay() console.log("the answer is " + calculator.compute()) }

Aquí está el código de la función de cálculo:

 compute() { let computation const prev = parseFloat(this.previousOperand) const current = parseFloat(this.currentOperand) if(isNaN(prev) || isNaN(current)) return 1 switch(this.operation) { case '+': computation = prev + current break case '-': computation = prev - current break case '*': computation = prev * current break case '÷': computation = prev / current break default: return } this.currentOperand = computation this.operation = undefined this.previousOperand = '' console.log(this.currentOperand) }

¡Cualquier ayuda es apreciada!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

en primer lugar, solo como práctica recomendada, no necesita crear un objeto en su función de clic si no necesita trabajar con el evento--

 equalsButton.addEventListener('click',() => { calculator.compute() calculator.updateDisplay() })

ahora,

la solución rápida es hacer que el evento keydown sea un alias para su función click() =>

 else if(e.key === "Enter") { equalsButton.click() // console.log("the answer is " + calculator.compute()) }

También me di cuenta de que llamas calculator.compute() como el primer paso de tu controlador de eventos 'Entrar', y luego lo vuelves a llamar en la instrucción console.log() , que borra el cálculo anterior (configurándolo en un cadena vacía aka NaN )

espero que todo esto ayude!

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda